package ig.metrica.ui.unidadsubcuenta;

import java.util.ArrayList;
import java.util.Properties;
import java.util.StringTokenizer;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.swing.JOptionPane;
import ig.metrica.origenesdedatos.Formato;
import ig.metrica.origenesdedatos.FormatoHome;
import ig.metrica.origenesdedatos.FormatoPK;
import ig.metrica.origenesdedatos.FormatounidadsubcuentaBMP;
import ig.metrica.origenesdedatos.FormatounidadsubcuentaBMPHome;
import ig.metrica.origenesdedatos.FormatounidadsubcuentaBMPPK;
import ig.metrica.ui.PrincipalMetrica;
import ig.metrica.ui.WizzardSevinproPanel;
import ig.util.ConexionServer;
import ig.util.ejb.IGBean;
import ig.util.excepciones.DatoInvalidoExcepcion;
import ig.util.excepciones.LogicaExcepcion;
import java.awt.Dimension;
import javax.swing.JFrame;

public class PantallaUnidadSubcuenta extends WizzardSevinproPanel {
	
	private PantallaDatosBasicosUnidad datosbasicos;
	private FormatounidadsubcuentaBMPHome home;
	private FormatoHome home2;
	private FormatounidadsubcuentaBMP formatounidad;
	private InitialContext ctx = null;
	private Properties prop = new Properties(); 
	{
		prop.put(Context.INITIAL_CONTEXT_FACTORY, IGBean.INITIAL_CONTEXT_FACTORY );
		String Sockec = new ConexionServer().getSocketServer(); 
		prop.put( Context.PROVIDER_URL, Sockec);
		ctx = new InitialContext(prop);
		home = (FormatounidadsubcuentaBMPHome)ctx.lookup("ig.metrica.origenesdedatos.FormatounidadsubcuentaBMP");
		home2 = (FormatoHome)ctx.lookup("ig.metrica.origenesdedatos.Formato");
	}

	
	public PantallaUnidadSubcuenta(JFrame frame) throws Exception{
		super(null);
        this.frame=frame;
		ArrayList pantallas = new ArrayList();
		pantallas.add( datosbasicos = new PantallaDatosBasicosUnidad() );		
		pantallaBusqueda = new PantallaBusquedaUnidad( new PantallaDatosBasicosUnidad(), this );
		setPantallasWizzard( pantallas, pantallaBusqueda);
        setPreferredSize(new Dimension(700, 250));
	}

	protected void adicionarRegistro() throws Exception {
		
		if ( datosbasicos.getUnidad().trim().equals("") || datosbasicos.getFormato().trim().equals("")
				|| datosbasicos.getSubcuenta().trim().equals("") || datosbasicos.getDescripcion().trim().equals("") ){
			
			throw new DatoInvalidoExcepcion("Debe registrarse informacion en todos los campos de la pantalla.");
		}
		
		StringTokenizer mCod = new StringTokenizer(datosbasicos.getFormato().trim(),"-");
		int mIdFormato = Integer.parseInt(mCod.nextToken());
		home.create( mIdFormato,datosbasicos.getUnidad(), datosbasicos.getSubcuenta(), datosbasicos.getDescripcion());
		llaveRegistro[0] = new FormatounidadsubcuentaBMPPK(mIdFormato,datosbasicos.getUnidad(), datosbasicos.getSubcuenta());
		
	}

	protected void editarRegistro() throws Exception {

		if ( datosbasicos.getUnidad().trim().equals("") || datosbasicos.getFormato().trim().equals("") 
				|| datosbasicos.getSubcuenta().trim().equals("") || datosbasicos.getDescripcion().trim().equals("") ) {
			throw new DatoInvalidoExcepcion("Debe registrarse informacion en todos los campos de la pantalla.");
		}
		StringTokenizer mCod = new StringTokenizer(datosbasicos.getFormato().trim(),"-");
		int mIdFormato = Integer.parseInt(mCod.nextToken());
		formatounidad.setIdformato(mIdFormato);
		formatounidad.setUnidaddecaptura(datosbasicos.getUnidad());
		formatounidad.setSubcuenta(datosbasicos.getSubcuenta());
		formatounidad.setDescripcion(datosbasicos.getDescripcion());		
	}

	protected void eliminarRegistro() throws Exception {
		formatounidad.remove();	
	}
	
	protected void cargarRegistro() throws Exception {
		if (llaveRegistro==null){
			throw new LogicaExcepcion("No es posible realizar la carga del registro con una llave nula");
		}
		
		formatounidad = home.findByPrimaryKey( (FormatounidadsubcuentaBMPPK)llaveRegistro[0] );
		Formato formato = home2.findByPrimaryKey(new FormatoPK(formatounidad.getIdformato()));
		
		datosbasicos.setFormato(formatounidad.getIdformato()+"-"+formato.getNombre());
		datosbasicos.setSubcuenta(formatounidad.getSubcuenta());
		datosbasicos.setDescripcion(formatounidad.getDescripcion());
		datosbasicos.setUnidad(formatounidad.getUnidaddecaptura());
	}

    protected void salir() {
    }

    protected void nuevo() {
    }

}




